import java.io.*;

import java.nio.*;

import java.nio.channels.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class WindowFileLock extends JFrame implements ActionListener {

   JTextArea text;

   JButton button;

   File file;

   RandomAccessFile input;

   FileChannel channel;

   FileLock lock;

   WindowFileLock(File f) {

      file=f;

      try {

         input=new RandomAccessFile(file,"rw"); 

         channel=input.getChannel();

         lock=channel.tryLock();

      }

      catch(Exception exp){}

      text=new JTextArea();

      button=new JButton("读取一行");

      button.addActionListener(this);

      add(new JScrollPane(text),BorderLayout.CENTER);

      add(button,BorderLayout.SOUTH);

      setSize(300,400);

      setVisible(true);

      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   }

   public void actionPerformed(ActionEvent e) {

      try{  

           lock.release();

           String lineString=input.readLine();

           text.append("\n"+lineString);

           lock=channel.tryLock();

           if(lineString==null)

             input.close();

      }

      catch(Exception ee){}

  }

}
